Distributed systems offer a host of advantages to users. For example, distributed systems provide opportunities to balance workload performed among different nodes, systems, or devices, in order to optimize various different functions, such as performing read or write requests. Risk of failure may be dispersed among different nodes so that one or more individual failures may be tolerated in the distributed system. Additionally, distributed systems may be scaled more easily than traditional monolithic systems in order to account for growing computational and other resource demands. In the face of these appealing benefits, various different implementation challenges for distributed systems may occur.
Coordination problems between various nodes can, for example, occur, especially when operating on or otherwise using a common or shared set of data. For example, in various systems, updates may be propagated to the nodes at differing timings. As a result, nodes intended to work similarly may instead work inconsistently due to using different data. To illustrate, in a routing system, shared metadata may be used to tell routers where to find various endpoints. However, if the shared metadata differs between two nodes, data may be misplaced or otherwise lost. Additionally, the nodes may be unable to determine that the nodes are operating using obsolete data.
While embodiments are described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that embodiments are not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit embodiments to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include”, “including”, and “includes” mean including, but not limited to.